version 14.2
clear
set more off

*     ****************************************************************  *
*     ****************************************************************  *
*       Filename:       pfp_3_analysis_WGI_ipolate.do                   *
*       Date:           06/03/2017                                      *
*       Author:         Felix Haass, Martin Ottmann                     *
*     ****************************************************************  *
*     ****************************************************************  *



// see footnote 8:
// The Control of Corruption measure is not available for all country-years in our sample. It starts with biannual
// measures in 1996 and becomes available annually only from 2002. We do not replace missing values in our empirical
// analysis. However, we test the robustness of our findings using two strategies. First, we replace missing Control
// of Corruption values with the previous non-missing values. Second, we replace missing values with a linear
// interpolation of Control of Corruption on year using Stata 14’s ipolate command (StataCorp, 2015). The 
// results do not change substantially and the findings remain robust.



******* OVERVIEW *******
******* (1) load data *******
******* (2) OLS regression with DepVar interpolated *******
******* (3) interaction b/w cabinetINC and WBnatres_ln *******
******* (4) interaction b/w cabinetINC and aid_gdp_ln *******



******* (1) load data *******

use profits_from_peace_replication_dataset.dta, clear



******* (2) OLS regression with DepVar interpolated *******

local model1 "cabinetINC WBnatres_ln aid_gdp_ln WBDI_gdppc_ln WBDI_poptotal_ln ethnic polity2"
local model2 "cabinetINC WBnatres_ln aid_gdp_ln WBDI_gdppc_ln WBDI_poptotal_ln ethnic polity2 cabXnatres"
local model3 "cabinetINC WBnatres_ln aid_gdp_ln WBDI_gdppc_ln WBDI_poptotal_ln ethnic polity2 cabXaid"
forval i = 1/3 {
   quietly reg WGI_corrupt_ip `model`i'' if pcy < 6, robust cluster(gwno)
   estimates store model`i'
 }
estout model1 model2 model3 ///
, cells(b(star fmt(2)) se(par fmt(2))) starlevels(* 0.10 ** 0.05 *** 0.01) stats(r2 r2_a N, fmt(2 2 0)) legend
esttab ///
model1 model2 model3 ///
using manuscript_footnote_8_ipolate_table.tex ///
, b(2) se(2) star(* 0.1 ** 0.05 *** 0.01) ///
stats(N r2_a, fmt(0 2) layout("\multicolumn{1}{c}{@}" "\multicolumn{1}{c}{@}") labels(`"Observations"' `"Adjusted R\textsuperscript{2}"')) ///
title(OLS Regression) ///
mtitles("Model 1" "Model 2" "Model 3") ///
order(cabinetINC WBnatres_ln cabXnatres aid_gdp_ln cabXaid WBDI_gdppc_ln polity2 ethnic WBDI_poptotal_ln) ///
label nogaps nonumbers booktabs fragment ///
replace



******* (3) interaction b/w cabinetINC and WBnatres_ln *******

quietly ///
reg WGI_corrupt_ip ///
i.cabinetINC##c.WBnatres_ln ///
c.polity2 c.WBDI_gdppc_ln c.WBDI_poptotal_ln c.ethnic ///
c.aid_gdp_ln ///
if pcy < 6, robust cluster(gwno)
margins, dydx(cabinetINC) at(WBnatres_ln=(0(0.1)4.5) (mean)_c) vsquish
matrix b = r(b)'
matrix list b
matrix b = b[47...,1]
matrix list b
matrix at = r(at)
matrix list at
matrix at = at[1...,"WBnatres_ln"]
matrix list at
matrix v = r(V)
matrix list v
matrix v = v[47...,47...]
matrix list v
matrix se = vecdiag(cholesky(diag(vecdiag(v))))'
matrix list se
matrix d = at,b,se
matrix list d
svmat d, names(d)
generate ul = d2 + 1.96 * d3
generate ll = d2 - 1.96 * d3
clist d1-ll in 1/12
gen yline = 0
graph twoway ///
   (hist WBnatres_ln if pcy < 6, width(0.1) percent color(gs14) yaxis(2) ytitle("Percentage of Observations", axis(2))) ///
   (line d2 d1, clpattern(solid) clwidth(medium) clcolor(black) yaxis(1)) ///
   (line ul d1, clpattern(shortdash) clwidth(thin) clcolor(black)) ///
   (line ll d1, clpattern(shortdash) clwidth(thin) clcolor(black)) ///
   (line yline d1, clwidth(thin) clcolor(black) clpattern(solid)), ///
   xtitle("Natural Resource Wealth (ln)") ///
   ytitle("Conditional Marginal Effect of Executive PS", axis(1)) ///
   ylabel(-1(.5).5) ///
   xlabel(0(1)4.5) ///
   xsize(8) ysize(6) ///
   scheme(lean1) legend(off)
graph export manuscript_footnote_8_ipolate_figure_a.pdf, replace
drop d1 d2 d3 ul ll yline



******* (4) interaction b/w cabinetINC and aid_gdp_ln *******

quietly ///
reg WGI_corrupt_ip ///
i.cabinetINC##c.aid_gdp_ln ///
c.polity2 c.WBDI_gdppc_ln c.WBDI_poptotal_ln c.ethnic ///
c.WBnatres_ln ///
if pcy < 6, robust cluster(gwno)
margins, dydx(cabinetINC) at(aid_gdp_ln=(-11(0.2)1) (mean)_c) vsquish
matrix b = r(b)'
matrix list b
matrix b = b[62...,1]
matrix list b
matrix at = r(at)
matrix list at
matrix at = at[1...,"aid_gdp_ln"]
matrix list at
matrix v = r(V)
matrix list v
matrix v = v[62...,62...]
matrix list v
matrix se = vecdiag(cholesky(diag(vecdiag(v))))'
matrix list se
matrix d = at,b,se
matrix list d
svmat d, names(d)
generate ul = d2 + 1.96 * d3
generate ll = d2 - 1.96 * d3
clist d1-ll in 1/12
gen yline = 0
graph twoway ///
   (hist aid_gdp_ln if pcy < 6, width(0.3) percent color(gs14) yaxis(2) ytitle("Percentage of Observations", axis(2))) ///
   (line d2 d1, clpattern(solid) clwidth(medium) clcolor(black) yaxis(1)) ///
   (line ul d1, clpattern(shortdash) clwidth(thin) clcolor(black)) ///
   (line ll d1, clpattern(shortdash) clwidth(thin) clcolor(black)) ///
   (line yline d1, clwidth(thin) clcolor(black) clpattern(solid)), ///
   xtitle("Foreign Aid Income (ln)") ///
   ytitle("Conditional Marginal Effect of Executive PS", axis(1)) ///
   ylabel(-3(.5)1) ///
   xlabel(-11(2)1) ///
   xsize(8) ysize(6) ///
   scheme(lean1) legend(off)
graph export manuscript_footnote_8_ipolate_figure_b.pdf, replace
drop d1 d2 d3 ul ll yline
